using System;
using System.Collections.Generic;

namespace SIP.PN.Servicios.Interfaces.DTO
{
    public class ProyectoTareaAsignacionDTOPuntajeSorter : IComparer<ProyectoTareaAsignacionDTO>
    {
        public int Compare(ProyectoTareaAsignacionDTO x, ProyectoTareaAsignacionDTO y)
        {
            return y.Puntaje.CompareTo(x.Puntaje);
        }
    }

    public class ProyectoTareaAsignacionDTO
    {
        private int codigoAsignacion;
        private string codigoOperario;
        private string codigoEspecialidad;
        private string codigoNivel;
        private string apellido;
        private string nombre;
        private string especialidad;
        private string nivelEspecialidad;
        private DateTime fechaAsignacion;
        private DateTime fechaInicio;
        private DateTime fechaFin;
        private int puntaje;
        private bool evaluado;

        public int CodigoAsignacion
        {
            get { return codigoAsignacion; }
            set { codigoAsignacion = value; }
        }

        public string CodigoOperario
        {
            get { return codigoOperario; }
            set { codigoOperario = value; }
        }

        public DateTime FechaAsignacion
        {
            get { return fechaAsignacion; }
            set { fechaAsignacion = value; }
        }

        public bool Evaluado
        {
            get { return evaluado; }
            set { evaluado = value; }
        }

        public string CodigoEspecialidad
        {
            get { return codigoEspecialidad; }
            set { codigoEspecialidad = value; }
        }

        public string CodigoNivel
        {
            get { return codigoNivel; }
            set { codigoNivel = value; }
        }

        public string Apellido
        {
            get { return apellido; }
            set { apellido = value; }
        }

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public string Especialidad
        {
            get { return especialidad; }
            set { especialidad = value; }
        }

        public string NivelEspecialidad
        {
            get { return nivelEspecialidad; }
            set { nivelEspecialidad = value; }
        }

        public DateTime FechaInicio
        {
            get { return fechaInicio; }
            set { fechaInicio = value; }
        }

        public DateTime FechaFin
        {
            get { return fechaFin; }
            set { fechaFin = value; }
        }

        public int Puntaje
        {
            get { return puntaje; }
            set { puntaje = value; }
        }

        public override string ToString()
        {
            return string.Format("{0}-{1}-{2}", codigoOperario, codigoEspecialidad, codigoNivel);
        }

        public override bool Equals(object obj)
        {
            ProyectoTareaAsignacionDTO tmp = obj as ProyectoTareaAsignacionDTO;
            if (tmp == null) return false;
            return ToString().Equals(tmp.ToString());
        }

        public override int GetHashCode()
        {
            return ToString().GetHashCode();
        }
    }
}
